package com.sxj.corejava.code15_反射;

import java.lang.reflect.Modifier;
import java.util.Arrays;

public class Test02_常用方法 {
    public static void main(String[] args) {
        Class c = User.class;
        System.out.println("类全名:" + c.getName());
        System.out.println("类名:" + c.getSimpleName());
        Class[] interfaces = c.getInterfaces();
        System.out.println("类实现的接口列表:" + Arrays.toString(interfaces));
        System.out.println("获取类的父类:" + c.getSuperclass());
        System.out.println("获取包:" + c.getPackage());
        System.out.println("获取包名:" + c.getPackage().getName());
        System.out.println("获取包名:" + c.getPackageName());
        System.out.println("User是否是接口:" + c.isInterface());
        Class c2 = SomeInterface.class;
        System.out.println("SomeInterface是否是接口:" + c2.isInterface());

        // 此时获取修饰符后返回值是一个int类型的数字,并不是具体的修饰符
        int i = c.getModifiers();
        System.out.println("获取修饰符:" + i);
        // 可以通过修饰符对象Modifier对象将其转换成具体的修饰符
        String modifier = Modifier.toString(i);
        System.out.println("具体修饰符为:" + modifier);

        try {
            // 可以调用构造方法
            Object obj = c.newInstance();
            System.out.println(obj);
        } catch (InstantiationException e) {
            System.out.println("错误:实例化失败,该类没有对应的无参构造方法");
        } catch (IllegalAccessException e) {
            System.out.println("非法访问异常,无参构造方法不能被外部访问");
        }

    }
}
